import Vue from 'vue'
import App from './App.vue'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import VueRouter from 'vue-router'
// 引入路由器
import router from "./router"
Vue.use(VueRouter)
Vue.config.productionTip = false
Vue.use(ElementUI)
import axios  from "axios";
import {LOGINURL, SPRINGBOOT} from "@/assets/js/HrefLocation";
import * as HrefLocation from "@/assets/js/HrefLocation"

axios.defaults.baseURL="http://"+SPRINGBOOT+"/"

//全局属性配置，在任意组件内可以使用this.$http获取axios对象
Vue.prototype.$http = axios



// 配置axios前置拦截器，作用是让所有axios请求携带token，后台需要token校验是否登录
axios.interceptors.request.use(config => {
  // 1.从缓存中获取到token,这里的Authorization时登录时你给用户设置token的键值
  let authorization = localStorage.getItem("token");
  // 2.如果token不为null，那么设置到请求头中，此处哪怕为null，我们也不进行处理，因为后台会进行拦截

  if (authorization) {
    //后台给登录用户设置的token的键时什么，headers['''']里的键也应该保持一致
    config.headers['Authorization'] = authorization;
  }
  // 3.放行

  return config;
}, error => {
//失败后抛出错误
  Promise.reject(error);
}),
// 响应拦截器
//     axios.interceptors.response.use(
//         response => {
//           // 在这里统一处理返回的数据
//           if (response.data && response.data.code === 0) {
//             // 假设返回的数据结构是 { code: 0, data: ... }
//             return response;
//           } else {
//             // 自定义错误处理
//             console.error('服务器返回错误：', response.data.message || '未知错误');
//             return Promise.reject(new Error(response.data.message || '服务器错误'));
//           }
//         },
//         error => {
//           // 统一处理错误
//           if (error.response) {
//             // 服务器响应，但返回的状态码不是 2xx
//             console.error('请求失败：', error.response.status, error.response.data);
//             var errorMsg;
//             if(error.response.status===401){
//               window.alert("请登录！")
//               window.location.href=HrefLocation.LOGINURL
//             }
//
//           } else if (error.request) {
//             // 请求已经发出，但没有响应
//             console.error('没有收到响应：', error.request);
//           } else {
//             // 其他错误
//             console.error('请求配置错误：', error.message);
//           }
//           return Promise.reject(error);
//         }
//     );
new Vue({
  render: h => h(App),
  router: router
}).$mount('#app')
